package edu.fileAndIo;

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;

public class FileDemo {

    public static void main(String[] args) {
//        mkdir();
//        createFile();
//        delete();
//        getInfo();
//        listFile(new File("./dir"));
        fileList(new File("./dir"));
    }


    //目录的创建    路劲 /  \\
    static void mkdir(){
//        File file = new File("F:/dir/dir2");
        File file = new File("./dir/dir2");
//        创建单级目录
//        file.mkdir();
//        多级目录
        boolean b = file.mkdirs();
        System.out.println(b);
    }

    //文件的创建
    static void createFile() {
        File file = new File("./dir/dir2", "file1.txt");
        //exists 判断文件或目录是否存在
        if (!file.exists()){
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    //目录或文件的删除    删除目录要求是空目录
    static void delete(){
        File file = new File("./dir/dir2/file1.txt");
        boolean b = file.delete();
        System.out.println("b = " + b);
    }

    //获取文件或目录信息
    static void getInfo(){
        File file = new File("./dir/dir2/file1.txt");
        String name = file.getName();
        System.out.println("name = " + name);
        System.out.println("file.getPath() = " + file.getPath());
        System.out.println("file.getAbsolutePath() = " + file.getAbsolutePath());
        System.out.println("file.length() = " + file.length());
        System.out.println("file.isFile() = " + file.isFile());
        System.out.println("file.isDirectory() = " + file.isDirectory());
    }

    //将指定目录下的子目录以及子文件全部展示
    //文件过滤或列出
    static void listFile(File file){
        //列出指定目录的直接子目录或子文件
        File[] files = file.listFiles();
        for (File file1 : files) {
            if (file1.isDirectory()){
                //此时可以使用迭代实现
                listFile(file1);
            }
            System.out.println("file1.getName() = " + file1.getName());
        }
    }

    //文件的过滤 只需要后缀是.txt的文件
    static void fileList(File file){
        if (file.isDirectory()){
            //FilenameFilter 根据文件名进行过滤
            File[] files = file.listFiles(new FilenameFilter() {
                @Override
                public boolean accept(File dir, String name) {
                    return name.endsWith(".txt");
                }
            });
            for (File file1 : files) {
                System.out.println("file1.getName() = " + file1.getName());
            }
        }
    }




}
